home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_xemacs.idb / usr / freeware / lib / xemacs-20.4 / info / lispref.info-14.z / lispref.info-14
Encoding:
GNU Info File  |  1998-05-21  |  48.5 KB  |  1,224 lines

  1. This is Info file ../../info/lispref.info, produced by Makeinfo version
  2. 1.68 from the input file lispref.texi.
  3.  
  4.    Edition History:
  5.  
  6.    GNU Emacs Lisp Reference Manual Second Edition (v2.01), May 1993 GNU
  7. Emacs Lisp Reference Manual Further Revised (v2.02), August 1993 Lucid
  8. Emacs Lisp Reference Manual (for 19.10) First Edition, March 1994
  9. XEmacs Lisp Programmer's Manual (for 19.12) Second Edition, April 1995
  10. GNU Emacs Lisp Reference Manual v2.4, June 1995 XEmacs Lisp
  11. Programmer's Manual (for 19.13) Third Edition, July 1995 XEmacs Lisp
  12. Reference Manual (for 19.14 and 20.0) v3.1, March 1996 XEmacs Lisp
  13. Reference Manual (for 19.15 and 20.1, 20.2) v3.2, April, May 1997
  14.  
  15.    Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995 Free Software
  16. Foundation, Inc.  Copyright (C) 1994, 1995 Sun Microsystems, Inc.
  17. Copyright (C) 1995, 1996 Ben Wing.
  18.  
  19.    Permission is granted to make and distribute verbatim copies of this
  20. manual provided the copyright notice and this permission notice are
  21. preserved on all copies.
  22.  
  23.    Permission is granted to copy and distribute modified versions of
  24. this manual under the conditions for verbatim copying, provided that the
  25. entire resulting derived work is distributed under the terms of a
  26. permission notice identical to this one.
  27.  
  28.    Permission is granted to copy and distribute translations of this
  29. manual into another language, under the above conditions for modified
  30. versions, except that this permission notice may be stated in a
  31. translation approved by the Foundation.
  32.  
  33.    Permission is granted to copy and distribute modified versions of
  34. this manual under the conditions for verbatim copying, provided also
  35. that the section entitled "GNU General Public License" is included
  36. exactly as in the original, and provided that the entire resulting
  37. derived work is distributed under the terms of a permission notice
  38. identical to this one.
  39.  
  40.    Permission is granted to copy and distribute translations of this
  41. manual into another language, under the above conditions for modified
  42. versions, except that the section entitled "GNU General Public License"
  43. may be included in a translation approved by the Free Software
  44. Foundation instead of in the original English.
  45.  
  46. 
  47. File: lispref.info,  Node: Backtracking,  Next: Debugging Backquote,  Prev: Specification List,  Up: Instrumenting Macro Calls
  48.  
  49. Backtracking
  50. ............
  51.  
  52.    If a specification fails to match at some point, this does not
  53. necessarily mean a syntax error will be signaled; instead,
  54. "backtracking" will take place until all alternatives have been
  55. exhausted.  Eventually every element of the argument list must be
  56. matched by some element in the specification, and every required element
  57. in the specification must match some argument.
  58.  
  59.    Backtracking is disabled for the remainder of a sublist or group when
  60. certain conditions occur, described below.  Backtracking is reenabled
  61. when a new alternative is established by `&optional', `&rest', or
  62. `&or'.  It is also reenabled initially when processing a sublist or
  63. group specification or an indirect specification.
  64.  
  65.    You might want to disable backtracking to commit to some alternative
  66. so that Edebug can provide a more specific syntax error message.
  67. Normally, if no alternative matches, Edebug reports that none matched,
  68. but if one alternative is committed to, Edebug can report how it failed
  69. to match.
  70.  
  71.    First, backtracking is disabled while matching any of the form
  72. specifications (i.e. `form', `body', `def-form', and `def-body').
  73. These specifications will match any form so any error must be in the
  74. form itself rather than at a higher level.
  75.  
  76.    Second, backtracking is disabled after successfully matching a quoted
  77. symbol or string specification, since this usually indicates a
  78. recognized construct.  If you have a set of alternative constructs that
  79. all begin with the same symbol, you can usually work around this
  80. constraint by factoring the symbol out of the alternatives, e.g.,
  81. `["foo" &or [first case] [second case] ...]'.
  82.  
  83.    Third, backtracking may be explicitly disabled by using the `gate'
  84. specification.  This is useful when you know that no higher
  85. alternatives may apply.
  86.  
  87. 
  88. File: lispref.info,  Node: Debugging Backquote,  Next: Specification Examples,  Prev: Backtracking,  Up: Instrumenting Macro Calls
  89.  
  90. Debugging Backquote
  91. ...................
  92.  
  93.    Backquote (``') is a macro that results in an expression that may or
  94. may not be evaluated.  It is often used to simplify the definition of a
  95. macro to return an expression that is evaluted, but Edebug does not know
  96. when this is the case.  However, the forms inside unquotes (`,' and
  97. `,@') are evaluated and Edebug instruments them.
  98.  
  99.    Nested backquotes are supported by Edebug, but there is a limit on
  100. the support of quotes inside of backquotes.  Quoted forms (with `'')
  101. are not normally evaluated, but if the quoted form appears immediately
  102. within `,' and `,@' forms, Edebug treats this as a backquoted form at
  103. the next higher level (even if there is not a next higher level - this
  104. is difficult to fix).
  105.  
  106.    If the backquoted forms happen to be code intended to be evaluated,
  107. you can have Edebug instrument them by using `edebug-`' instead of the
  108. regular ``'.  Unquoted forms can always appear inside `edebug-`'
  109. anywhere a form is normally allowed.  But `(, FORM)' may be used in two
  110. other places specially recognized by Edebug: wherever a predicate
  111. specification would match, and at the head of a list form in place of a
  112. function name or lambda expression.  The FORM inside a spliced unquote,
  113. `(,@ FORM)', will be wrapped, but the unquote form itself will not be
  114. wrapped since this would interfere with the splicing.
  115.  
  116.    There is one other complication with using `edebug-`'.  If the
  117. `edebug-`' call is in a macro and the macro may be called from code
  118. that is also instrumented, and if unquoted forms contain any macro
  119. arguments bound to instrumented forms, then you should modify the
  120. specification for the macro as follows: the specifications for those
  121. arguments must use `def-form' instead of `form'.  (This is to
  122. reestablish the Edebugging context for those external forms.)
  123.  
  124.    For example, the `for' macro (*note Problems with Macros: ()Problems
  125. with Macros.) is shown here but with `edebug-`' substituted for regular
  126. ``'.
  127.  
  128.      (defmacro inc (var)
  129.        (list 'setq var (list '1+ var)))
  130.      
  131.      (defmacro for (var from init to final do &rest body)
  132.        (let ((tempvar (make-symbol "max")))
  133.          (edebug-` (let (((, var) (, init))
  134.                          ((, tempvar) (, final)))
  135.                      (while (<= (, var) (, tempvar))
  136.                        (, body)
  137.                        (inc (, var)))))))
  138.  
  139.    Here is the corresponding modified Edebug specification and some code
  140. that calls the macro:
  141.  
  142.      (def-edebug-spec for
  143.        (symbolp "from" def-form "to" def-form "do" &rest def-form))
  144.      
  145.      (let ((n 5))
  146.        (for i from n to (* n (+ n 1)) do
  147.          (message "%s" i)))
  148.  
  149.    After instrumenting the `for' macro and the macro call, Edebug first
  150. steps to the beginning of the macro call, then into the macro body,
  151. then through each of the unquoted expressions in the backquote showing
  152. the expressions that will be embedded in the backquote form.  Then when
  153. the macro expansion is evaluated, Edebug will step through the `let'
  154. form and each time it gets to an unquoted form, it will jump back to an
  155. argument of the macro call to step through that expression.  Finally
  156. stepping will continue after the macro call.  Even more convoluted
  157. execution paths may result when using anonymous functions.
  158.  
  159.    When the result of an expression is an instrumented expression, it is
  160. difficult to see the expression inside the instrumentation.  So you may
  161. want to set the option `edebug-unwrap-results' to a non-`nil' value
  162. while debugging such expressions, but it would slow Edebug down to
  163. always do this.
  164.  
  165. 
  166. File: lispref.info,  Node: Specification Examples,  Prev: Debugging Backquote,  Up: Instrumenting Macro Calls
  167.  
  168. Specification Examples
  169. ......................
  170.  
  171.    Here we provide several examples of Edebug specifications to show
  172. many of its capabilities.
  173.  
  174.    A `let' special form has a sequence of bindings and a body.  Each of
  175. the bindings is either a symbol or a sublist with a symbol and optional
  176. value.  In the specification below, notice the `gate' inside of the
  177. sublist to prevent backtracking.
  178.  
  179.      (def-edebug-spec let
  180.        ((&rest
  181.          &or symbolp (gate symbolp &optional form))
  182.         body))
  183.  
  184.    Edebug uses the following specifications for `defun' and `defmacro'
  185. and the associated argument list and `interactive' specifications.  It
  186. is necessary to handle the expression argument of an interactive form
  187. specially since it is actually evaluated outside of the function body.
  188.  
  189.      (def-edebug-spec defmacro defun)      ; Indirect ref to `defun' spec
  190.      (def-edebug-spec defun
  191.        (&define name lambda-list
  192.                 [&optional stringp]        ; Match the doc string, if present.
  193.                 [&optional ("interactive" interactive)]
  194.                 def-body))
  195.      
  196.      (def-edebug-spec lambda-list
  197.        (([&rest arg]
  198.          [&optional ["&optional" arg &rest arg]]
  199.          &optional ["&rest" arg]
  200.          )))
  201.      
  202.      (def-edebug-spec interactive
  203.        (&optional &or stringp def-form))    ; Notice: `def-form'
  204.  
  205.    The specification for backquote below illustrates how to match
  206. dotted lists and use `nil' to terminate recursion.  It also illustrates
  207. how components of a vector may be matched.  (The actual specification
  208. provided by Edebug does not support dotted lists because doing so
  209. causes very deep recursion that could fail.)
  210.  
  211.      (def-edebug-spec ` (backquote-form))  ;; alias just for clarity
  212.      
  213.      (def-edebug-spec backquote-form
  214.        (&or ([&or "," ",@"] &or ("quote" backquote-form) form)
  215.             (backquote-form . [&or nil backquote-form])
  216.             (vector &rest backquote-form)
  217.             sexp))
  218.  
  219. 
  220. File: lispref.info,  Node: Edebug Options,  Prev: Instrumenting Macro Calls,  Up: Edebug
  221.  
  222. Edebug Options
  223. --------------
  224.  
  225.    These options affect the behavior of Edebug:
  226.  
  227.  - User Option: edebug-setup-hook
  228.      Functions to call before Edebug is used.  Each time it is set to a
  229.      new value, Edebug will call those functions once and then
  230.      `edebug-setup-hook' is reset to `nil'.  You could use this to load
  231.      up Edebug specifications associated with a package you are using
  232.      but only when you also use Edebug.  See *Note Instrumenting::.
  233.  
  234.  - User Option: edebug-all-defs
  235.      If non-`nil', normal evaluation of any defining forms (e.g.
  236.      `defun' and `defmacro') will instrument them for Edebug.  This
  237.      applies to `eval-defun', `eval-region', and `eval-current-buffer'.
  238.  
  239.      Use the command `M-x edebug-all-defs' to toggle the value of this
  240.      variable. You may want to make this variable local to each buffer
  241.      by calling `(make-local-variable 'edebug-all-defs)' in your
  242.      `emacs-lisp-mode-hook'.  See *Note Instrumenting::.
  243.  
  244.  - User Option: edebug-all-forms
  245.      If non-`nil', normal evaluation of any forms by `eval-defun',
  246.      `eval-region', and `eval-current-buffer' will instrument them for
  247.      Edebug.
  248.  
  249.      Use the command `M-x edebug-all-forms' to toggle the value of this
  250.      option.  See *Note Instrumenting::.
  251.  
  252.  - User Option: edebug-save-windows
  253.      If non-`nil', save and restore window configuration on Edebug
  254.      calls.  It takes some time to do this, so if your program does not
  255.      care what happens to data about windows, you may want to set this
  256.      variable to `nil'.
  257.  
  258.      If the value is a list, only the listed windows are saved and
  259.      restored.
  260.  
  261.      `M-x edebug-toggle-save-windows' may be used to change this
  262.      variable.  This command is bound to `W' in source code buffers.
  263.      See *Note Edebug Display Update::.
  264.  
  265.  - User Option: edebug-save-displayed-buffer-points
  266.      If non-`nil', save and restore point in all displayed buffers.
  267.      This is necessary if you are debugging code that changes the point
  268.      of a buffer which is displayed in a non-selected window.  If
  269.      Edebug or the user then selects the window, the buffer's point
  270.      will be changed to the window's point.
  271.  
  272.      This is an expensive operation since it visits each window and
  273.      therefore each displayed buffer twice for each Edebug activation,
  274.      so it is best to avoid it if you can.  See *Note Edebug Display
  275.      Update::.
  276.  
  277.  - User Option: edebug-initial-mode
  278.      If this variable is non-`nil', it specifies the initial execution
  279.      mode for Edebug when it is first activated.  Possible values are
  280.      `step', `next', `go', `Go-nonstop', `trace', `Trace-fast',
  281.      `continue', and `Continue-fast'.
  282.  
  283.      The default value is `step'.  See *Note Edebug Execution Modes::.
  284.  
  285.  - User Option: edebug-trace
  286.      Non-`nil' means display a trace of function entry and exit.
  287.      Tracing output is displayed in a buffer named `*edebug-trace*', one
  288.      function entry or exit per line, indented by the recursion level.
  289.  
  290.      The default value is `nil'.
  291.  
  292.      Also see `edebug-tracing'.  See *Note Tracing::.
  293.  
  294.  - User Option: edebug-test-coverage
  295.      If non-`nil', Edebug tests coverage of all expressions debugged.
  296.      This is done by comparing the result of each expression with the
  297.      previous result. Coverage is considered OK if two different
  298.      results are found.  So to sufficiently test the coverage of your
  299.      code, try to execute it under conditions that evaluate all
  300.      expressions more than once, and produce different results for each
  301.      expression.
  302.  
  303.      Use `M-x edebug-display-freq-count' to display the frequency count
  304.      and coverage information for a definition.  See *Note Coverage
  305.      Testing::.
  306.  
  307.  - User Option: edebug-continue-kbd-macro
  308.      If non-`nil', continue defining or executing any keyboard macro
  309.      that is executing outside of Edebug.   Use this with caution since
  310.      it is not debugged.  See *Note Edebug Execution Modes::.
  311.  
  312.  - User Option: edebug-print-length
  313.      If non-`nil', bind `print-length' to this while printing results
  314.      in Edebug.  The default value is `50'.  See *Note Printing in
  315.      Edebug::.
  316.  
  317.  - User Option: edebug-print-level
  318.      If non-`nil', bind `print-level' to this while printing results in
  319.      Edebug.  The default value is `50'.
  320.  
  321.  - User Option: edebug-print-circle
  322.      If non-`nil', bind `print-circle' to this while printing results
  323.      in Edebug.  The default value is `nil'.
  324.  
  325.  - User Option: edebug-on-error
  326.      `debug-on-error' is bound to this while Edebug is active.  See
  327.      *Note Trapping Errors::.
  328.  
  329.  - User Option: edebug-on-quit
  330.      `debug-on-quit' is bound to this while Edebug is active.  See
  331.      *Note Trapping Errors::.
  332.  
  333.  - User Option: edebug-unwrap-results
  334.      Non-`nil' if Edebug should unwrap results of expressions.  This is
  335.      useful when debugging macros where the results of expressions are
  336.      instrumented expressions.  But don't do this when results might be
  337.      circular or an infinite loop will result.  See *Note Debugging
  338.      Backquote::.
  339.  
  340.  - User Option: edebug-global-break-condition
  341.      If non-`nil', an expression to test for at every stop point.  If
  342.      the result is non-nil, then break.  Errors are ignored.  See *Note
  343.      Global Break Condition::.
  344.  
  345. 
  346. File: lispref.info,  Node: Read and Print,  Next: Minibuffers,  Prev: Debugging,  Up: Top
  347.  
  348. Reading and Printing Lisp Objects
  349. *********************************
  350.  
  351.    "Printing" and "reading" are the operations of converting Lisp
  352. objects to textual form and vice versa.  They use the printed
  353. representations and read syntax described in *Note Lisp Data Types::.
  354.  
  355.    This chapter describes the Lisp functions for reading and printing.
  356. It also describes "streams", which specify where to get the text (if
  357. reading) or where to put it (if printing).
  358.  
  359. * Menu:
  360.  
  361. * Streams Intro::     Overview of streams, reading and printing.
  362. * Input Streams::     Various data types that can be used as input streams.
  363. * Input Functions::   Functions to read Lisp objects from text.
  364. * Output Streams::    Various data types that can be used as output streams.
  365. * Output Functions::  Functions to print Lisp objects as text.
  366. * Output Variables::  Variables that control what the printing functions do.
  367.  
  368. 
  369. File: lispref.info,  Node: Streams Intro,  Next: Input Streams,  Up: Read and Print
  370.  
  371. Introduction to Reading and Printing
  372. ====================================
  373.  
  374.    "Reading" a Lisp object means parsing a Lisp expression in textual
  375. form and producing a corresponding Lisp object.  This is how Lisp
  376. programs get into Lisp from files of Lisp code.  We call the text the
  377. "read syntax" of the object.  For example, the text `(a . 5)' is the
  378. read syntax for a cons cell whose CAR is `a' and whose CDR is the
  379. number 5.
  380.  
  381.    "Printing" a Lisp object means producing text that represents that
  382. object--converting the object to its printed representation.  Printing
  383. the cons cell described above produces the text `(a . 5)'.
  384.  
  385.    Reading and printing are more or less inverse operations: printing
  386. the object that results from reading a given piece of text often
  387. produces the same text, and reading the text that results from printing
  388. an object usually produces a similar-looking object.  For example,
  389. printing the symbol `foo' produces the text `foo', and reading that text
  390. returns the symbol `foo'.  Printing a list whose elements are `a' and
  391. `b' produces the text `(a b)', and reading that text produces a list
  392. (but not the same list) with elements `a' and `b'.
  393.  
  394.    However, these two operations are not precisely inverses.  There are
  395. three kinds of exceptions:
  396.  
  397.    * Printing can produce text that cannot be read.  For example,
  398.      buffers, windows, frames, subprocesses and markers print into text
  399.      that starts with `#'; if you try to read this text, you get an
  400.      error.  There is no way to read those data types.
  401.  
  402.    * One object can have multiple textual representations.  For example,
  403.      `1' and `01' represent the same integer, and `(a b)' and `(a .
  404.      (b))' represent the same list.  Reading will accept any of the
  405.      alternatives, but printing must choose one of them.
  406.  
  407.    * Comments can appear at certain points in the middle of an object's
  408.      read sequence without affecting the result of reading it.
  409.  
  410. 
  411. File: lispref.info,  Node: Input Streams,  Next: Input Functions,  Prev: Streams Intro,  Up: Read and Print
  412.  
  413. Input Streams
  414. =============
  415.  
  416.    Most of the Lisp functions for reading text take an "input stream"
  417. as an argument.  The input stream specifies where or how to get the
  418. characters of the text to be read.  Here are the possible types of input
  419. stream:
  420.  
  421. BUFFER
  422.      The input characters are read from BUFFER, starting with the
  423.      character directly after point.  Point advances as characters are
  424.      read.
  425.  
  426. MARKER
  427.      The input characters are read from the buffer that MARKER is in,
  428.      starting with the character directly after the marker.  The marker
  429.      position advances as characters are read.  The value of point in
  430.      the buffer has no effect when the stream is a marker.
  431.  
  432. STRING
  433.      The input characters are taken from STRING, starting at the first
  434.      character in the string and using as many characters as required.
  435.  
  436. FUNCTION
  437.      The input characters are generated by FUNCTION, one character per
  438.      call.  Normally FUNCTION is called with no arguments, and should
  439.      return a character.
  440.  
  441.      Occasionally FUNCTION is called with one argument (always a
  442.      character).  When that happens, FUNCTION should save the argument
  443.      and arrange to return it on the next call.  This is called
  444.      "unreading" the character; it happens when the Lisp reader reads
  445.      one character too many and wants to "put it back where it came
  446.      from".
  447.  
  448. `t'
  449.      `t' used as a stream means that the input is read from the
  450.      minibuffer.  In fact, the minibuffer is invoked once and the text
  451.      given by the user is made into a string that is then used as the
  452.      input stream.
  453.  
  454. `nil'
  455.      `nil' supplied as an input stream means to use the value of
  456.      `standard-input' instead; that value is the "default input
  457.      stream", and must be a non-`nil' input stream.
  458.  
  459. SYMBOL
  460.      A symbol as input stream is equivalent to the symbol's function
  461.      definition (if any).
  462.  
  463.    Here is an example of reading from a stream that is a buffer, showing
  464. where point is located before and after:
  465.  
  466.      ---------- Buffer: foo ----------
  467.      This-!- is the contents of foo.
  468.      ---------- Buffer: foo ----------
  469.      
  470.      (read (get-buffer "foo"))
  471.           => is
  472.      (read (get-buffer "foo"))
  473.           => the
  474.      
  475.      ---------- Buffer: foo ----------
  476.      This is the-!- contents of foo.
  477.      ---------- Buffer: foo ----------
  478.  
  479. Note that the first read skips a space.  Reading skips any amount of
  480. whitespace preceding the significant text.
  481.  
  482.    In Emacs 18, reading a symbol discarded the delimiter terminating the
  483. symbol.  Thus, point would end up at the beginning of `contents' rather
  484. than after `the'.  The Emacs 19 behavior is superior because it
  485. correctly handles input such as `bar(foo)', where the open-parenthesis
  486. that ends one object is needed as the beginning of another object.
  487.  
  488.    Here is an example of reading from a stream that is a marker,
  489. initially positioned at the beginning of the buffer shown.  The value
  490. read is the symbol `This'.
  491.  
  492.  
  493.      ---------- Buffer: foo ----------
  494.      This is the contents of foo.
  495.      ---------- Buffer: foo ----------
  496.      
  497.      (setq m (set-marker (make-marker) 1 (get-buffer "foo")))
  498.           => #<marker at 1 in foo>
  499.      (read m)
  500.           => This
  501.      m
  502.           => #<marker at 5 in foo>   ;; Before the first space.
  503.  
  504.    Here we read from the contents of a string:
  505.  
  506.      (read "(When in) the course")
  507.           => (When in)
  508.  
  509.    The following example reads from the minibuffer.  The prompt is:
  510. `Lisp expression: '.  (That is always the prompt used when you read
  511. from the stream `t'.)  The user's input is shown following the prompt.
  512.  
  513.      (read t)
  514.           => 23
  515.      ---------- Buffer: Minibuffer ----------
  516.      Lisp expression: 23 <RET>
  517.      ---------- Buffer: Minibuffer ----------
  518.  
  519.    Finally, here is an example of a stream that is a function, named
  520. `useless-stream'.  Before we use the stream, we initialize the variable
  521. `useless-list' to a list of characters.  Then each call to the function
  522. `useless-stream' obtains the next character in the list or unreads a
  523. character by adding it to the front of the list.
  524.  
  525.      (setq useless-list (append "XY()" nil))
  526.           => (88 89 40 41)
  527.      
  528.      (defun useless-stream (&optional unread)
  529.        (if unread
  530.            (setq useless-list (cons unread useless-list))
  531.          (prog1 (car useless-list)
  532.                 (setq useless-list (cdr useless-list)))))
  533.           => useless-stream
  534.  
  535. Now we read using the stream thus constructed:
  536.  
  537.      (read 'useless-stream)
  538.           => XY
  539.      
  540.      useless-list
  541.           => (40 41)
  542.  
  543. Note that the open and close parentheses remains in the list.  The Lisp
  544. reader encountered the open parenthesis, decided that it ended the
  545. input, and unread it.  Another attempt to read from the stream at this
  546. point would read `()' and return `nil'.
  547.  
  548. 
  549. File: lispref.info,  Node: Input Functions,  Next: Output Streams,  Prev: Input Streams,  Up: Read and Print
  550.  
  551. Input Functions
  552. ===============
  553.  
  554.    This section describes the Lisp functions and variables that pertain
  555. to reading.
  556.  
  557.    In the functions below, STREAM stands for an input stream (see the
  558. previous section).  If STREAM is `nil' or omitted, it defaults to the
  559. value of `standard-input'.
  560.  
  561.    An `end-of-file' error is signaled if reading encounters an
  562. unterminated list, vector, or string.
  563.  
  564.  - Function: read &optional STREAM
  565.      This function reads one textual Lisp expression from STREAM,
  566.      returning it as a Lisp object.  This is the basic Lisp input
  567.      function.
  568.  
  569.  - Function: read-from-string STRING &optional START END
  570.      This function reads the first textual Lisp expression from the
  571.      text in STRING.  It returns a cons cell whose CAR is that
  572.      expression, and whose CDR is an integer giving the position of the
  573.      next remaining character in the string (i.e., the first one not
  574.      read).
  575.  
  576.      If START is supplied, then reading begins at index START in the
  577.      string (where the first character is at index 0).  If END is also
  578.      supplied, then reading stops just before that index, as if the rest
  579.      of the string were not there.
  580.  
  581.      For example:
  582.  
  583.           (read-from-string "(setq x 55) (setq y 5)")
  584.                => ((setq x 55) . 11)
  585.           (read-from-string "\"A short string\"")
  586.                => ("A short string" . 16)
  587.           
  588.           ;; Read starting at the first character.
  589.           (read-from-string "(list 112)" 0)
  590.                => ((list 112) . 10)
  591.           ;; Read starting at the second character.
  592.           (read-from-string "(list 112)" 1)
  593.                => (list . 5)
  594.           ;; Read starting at the seventh character,
  595.           ;;   and stopping at the ninth.
  596.           (read-from-string "(list 112)" 6 8)
  597.                => (11 . 8)
  598.  
  599.  - Variable: standard-input
  600.      This variable holds the default input stream--the stream that
  601.      `read' uses when the STREAM argument is `nil'.
  602.  
  603. 
  604. File: lispref.info,  Node: Output Streams,  Next: Output Functions,  Prev: Input Functions,  Up: Read and Print
  605.  
  606. Output Streams
  607. ==============
  608.  
  609.    An output stream specifies what to do with the characters produced
  610. by printing.  Most print functions accept an output stream as an
  611. optional argument.  Here are the possible types of output stream:
  612.  
  613. BUFFER
  614.      The output characters are inserted into BUFFER at point.  Point
  615.      advances as characters are inserted.
  616.  
  617. MARKER
  618.      The output characters are inserted into the buffer that MARKER
  619.      points into, at the marker position.  The marker position advances
  620.      as characters are inserted.  The value of point in the buffer has
  621.      no effect on printing when the stream is a marker.
  622.  
  623. FUNCTION
  624.      The output characters are passed to FUNCTION, which is responsible
  625.      for storing them away.  It is called with a single character as
  626.      argument, as many times as there are characters to be output, and
  627.      is free to do anything at all with the characters it receives.
  628.  
  629. `t'
  630.      The output characters are displayed in the echo area.
  631.  
  632. `nil'
  633.      `nil' specified as an output stream means to the value of
  634.      `standard-output' instead; that value is the "default output
  635.      stream", and must be a non-`nil' output stream.
  636.  
  637. SYMBOL
  638.      A symbol as output stream is equivalent to the symbol's function
  639.      definition (if any).
  640.  
  641.    Many of the valid output streams are also valid as input streams.
  642. The difference between input and output streams is therefore mostly one
  643. of how you use a Lisp object, not a distinction of types of object.
  644.  
  645.    Here is an example of a buffer used as an output stream.  Point is
  646. initially located as shown immediately before the `h' in `the'.  At the
  647. end, point is located directly before that same `h'.
  648.  
  649.      ---------- Buffer: foo ----------
  650.      This is t-!-he contents of foo.
  651.      ---------- Buffer: foo ----------
  652.      
  653.      (print "This is the output" (get-buffer "foo"))
  654.           => "This is the output"
  655.      
  656.      ---------- Buffer: foo ----------
  657.      This is t
  658.      "This is the output"
  659.      -!-he contents of foo.
  660.      ---------- Buffer: foo ----------
  661.  
  662.    Now we show a use of a marker as an output stream.  Initially, the
  663. marker is in buffer `foo', between the `t' and the `h' in the word
  664. `the'.  At the end, the marker has advanced over the inserted text so
  665. that it remains positioned before the same `h'.  Note that the location
  666. of point, shown in the usual fashion, has no effect.
  667.  
  668.      ---------- Buffer: foo ----------
  669.      "This is the -!-output"
  670.      ---------- Buffer: foo ----------
  671.      
  672.      m
  673.           => #<marker at 11 in foo>
  674.      
  675.      (print "More output for foo." m)
  676.           => "More output for foo."
  677.      
  678.      ---------- Buffer: foo ----------
  679.      "This is t
  680.      "More output for foo."
  681.      he -!-output"
  682.      ---------- Buffer: foo ----------
  683.      
  684.      m
  685.           => #<marker at 35 in foo>
  686.  
  687.    The following example shows output to the echo area:
  688.  
  689.      (print "Echo Area output" t)
  690.           => "Echo Area output"
  691.      ---------- Echo Area ----------
  692.      "Echo Area output"
  693.      ---------- Echo Area ----------
  694.  
  695.    Finally, we show the use of a function as an output stream.  The
  696. function `eat-output' takes each character that it is given and conses
  697. it onto the front of the list `last-output' (*note Building Lists::.).
  698. At the end, the list contains all the characters output, but in reverse
  699. order.
  700.  
  701.      (setq last-output nil)
  702.           => nil
  703.      
  704.      (defun eat-output (c)
  705.        (setq last-output (cons c last-output)))
  706.           => eat-output
  707.      
  708.      (print "This is the output" 'eat-output)
  709.           => "This is the output"
  710.      
  711.      last-output
  712.           => (?\n ?\" ?t ?u ?p ?t ?u ?o ?\  ?e ?h ?t
  713.                      ?\  ?s ?i ?\  ?s ?i ?h ?T ?\" ?\n)
  714.  
  715. Now we can put the output in the proper order by reversing the list:
  716.  
  717.      (concat (nreverse last-output))
  718.           => "
  719.      \"This is the output\"
  720.      "
  721.  
  722. Calling `concat' converts the list to a string so you can see its
  723. contents more clearly.
  724.  
  725. 
  726. File: lispref.info,  Node: Output Functions,  Next: Output Variables,  Prev: Output Streams,  Up: Read and Print
  727.  
  728. Output Functions
  729. ================
  730.  
  731.    This section describes the Lisp functions for printing Lisp objects.
  732.  
  733.    Some of the XEmacs printing functions add quoting characters to the
  734. output when necessary so that it can be read properly.  The quoting
  735. characters used are `"' and `\'; they distinguish strings from symbols,
  736. and prevent punctuation characters in strings and symbols from being
  737. taken as delimiters when reading.  *Note Printed Representation::, for
  738. full details.  You specify quoting or no quoting by the choice of
  739. printing function.
  740.  
  741.    If the text is to be read back into Lisp, then it is best to print
  742. with quoting characters to avoid ambiguity.  Likewise, if the purpose is
  743. to describe a Lisp object clearly for a Lisp programmer.  However, if
  744. the purpose of the output is to look nice for humans, then it is better
  745. to print without quoting.
  746.  
  747.    Printing a self-referent Lisp object requires an infinite amount of
  748. text.  In certain cases, trying to produce this text leads to a stack
  749. overflow.  XEmacs detects such recursion and prints `#LEVEL' instead of
  750. recursively printing an object already being printed.  For example,
  751. here `#0' indicates a recursive reference to the object at level 0 of
  752. the current print operation:
  753.  
  754.      (setq foo (list nil))
  755.           => (nil)
  756.      (setcar foo foo)
  757.           => (#0)
  758.  
  759.    In the functions below, STREAM stands for an output stream.  (See
  760. the previous section for a description of output streams.)  If STREAM
  761. is `nil' or omitted, it defaults to the value of `standard-output'.
  762.  
  763.  - Function: print OBJECT &optional STREAM
  764.      The `print' function is a convenient way of printing.  It outputs
  765.      the printed representation of OBJECT to STREAM, printing in
  766.      addition one newline before OBJECT and another after it.  Quoting
  767.      characters are used.  `print' returns OBJECT.  For example:
  768.  
  769.           (progn (print 'The\ cat\ in)
  770.                  (print "the hat")
  771.                  (print " came back"))
  772.                -|
  773.                -| The\ cat\ in
  774.                -|
  775.                -| "the hat"
  776.                -|
  777.                -| " came back"
  778.                -|
  779.                => " came back"
  780.  
  781.  - Function: prin1 OBJECT &optional STREAM
  782.      This function outputs the printed representation of OBJECT to
  783.      STREAM.  It does not print newlines to separate output as `print'
  784.      does, but it does use quoting characters just like `print'.  It
  785.      returns OBJECT.
  786.  
  787.           (progn (prin1 'The\ cat\ in)
  788.                  (prin1 "the hat")
  789.                  (prin1 " came back"))
  790.                -| The\ cat\ in"the hat"" came back"
  791.                => " came back"
  792.  
  793.  - Function: princ OBJECT &optional STREAM
  794.      This function outputs the printed representation of OBJECT to
  795.      STREAM.  It returns OBJECT.
  796.  
  797.      This function is intended to produce output that is readable by
  798.      people, not by `read', so it doesn't insert quoting characters and
  799.      doesn't put double-quotes around the contents of strings.  It does
  800.      not add any spacing between calls.
  801.  
  802.           (progn
  803.             (princ 'The\ cat)
  804.             (princ " in the \"hat\""))
  805.                -| The cat in the "hat"
  806.                => " in the \"hat\""
  807.  
  808.  - Function: terpri &optional STREAM
  809.      This function outputs a newline to STREAM.  The name stands for
  810.      "terminate print".
  811.  
  812.  - Function: write-char CHARACTER &optional STREAM
  813.      This function outputs CHARACTER to STREAM.  It returns CHARACTER.
  814.  
  815.  - Function: prin1-to-string OBJECT &optional NOESCAPE
  816.      This function returns a string containing the text that `prin1'
  817.      would have printed for the same argument.
  818.  
  819.           (prin1-to-string 'foo)
  820.                => "foo"
  821.           (prin1-to-string (mark-marker))
  822.                => "#<marker at 2773 in strings.texi>"
  823.  
  824.      If NOESCAPE is non-`nil', that inhibits use of quoting characters
  825.      in the output.  (This argument is supported in Emacs versions 19
  826.      and later.)
  827.  
  828.           (prin1-to-string "foo")
  829.                => "\"foo\""
  830.           (prin1-to-string "foo" t)
  831.                => "foo"
  832.  
  833.      See `format', in *Note String Conversion::, for other ways to
  834.      obtain the printed representation of a Lisp object as a string.
  835.  
  836. 
  837. File: lispref.info,  Node: Output Variables,  Prev: Output Functions,  Up: Read and Print
  838.  
  839. Variables Affecting Output
  840. ==========================
  841.  
  842.  - Variable: standard-output
  843.      The value of this variable is the default output stream--the stream
  844.      that print functions use when the STREAM argument is `nil'.
  845.  
  846.  - Variable: print-escape-newlines
  847.      If this variable is non-`nil', then newline characters in strings
  848.      are printed as `\n' and formfeeds are printed as `\f'.  Normally
  849.      these characters are printed as actual newlines and formfeeds.
  850.  
  851.      This variable affects the print functions `prin1' and `print', as
  852.      well as everything that uses them.  It does not affect `princ'.
  853.      Here is an example using `prin1':
  854.  
  855.           (prin1 "a\nb")
  856.                -| "a
  857.                -| b"
  858.                => "a
  859.           b"
  860.           
  861.           (let ((print-escape-newlines t))
  862.             (prin1 "a\nb"))
  863.                -| "a\nb"
  864.                => "a
  865.           b"
  866.  
  867.      In the second expression, the local binding of
  868.      `print-escape-newlines' is in effect during the call to `prin1',
  869.      but not during the printing of the result.
  870.  
  871.  - Variable: print-readably
  872.      If non-`nil', then all objects will be printed in a readable form.
  873.      If an object has no readable representation, then an error is
  874.      signalled.  When `print-readably' is true, compiled-function
  875.      objects will be written in `#[...]' form instead of in
  876.      `#<compiled-function [...]>' form, and two-element lists of the
  877.      form `(quote object)' will be written as the equivalent `'object'.
  878.      Do not *set* this variable; bind it instead.
  879.  
  880.  - Variable: print-length
  881.      The value of this variable is the maximum number of elements of a
  882.      list that will be printed.  If a list being printed has more than
  883.      this many elements, it is abbreviated with an ellipsis.
  884.  
  885.      If the value is `nil' (the default), then there is no limit.
  886.  
  887.           (setq print-length 2)
  888.                => 2
  889.           (print '(1 2 3 4 5))
  890.                -| (1 2 ...)
  891.                => (1 2 ...)
  892.  
  893.  - Variable: print-level
  894.      The value of this variable is the maximum depth of nesting of
  895.      parentheses and brackets when printed.  Any list or vector at a
  896.      depth exceeding this limit is abbreviated with an ellipsis.  A
  897.      value of `nil' (which is the default) means no limit.
  898.  
  899.      This variable exists in version 19 and later versions.
  900.  
  901.  - Variable: print-string-length
  902.      The value of this variable is the maximum number of characters of
  903.      a string that will be printed.  If a string being printed has more
  904.      than this many characters, it is abbreviated with an ellipsis.
  905.  
  906.  - Variable: print-gensym
  907.      If non-`nil', then uninterned symbols will be printed specially.
  908.      Uninterned symbols are those which are not present in `obarray',
  909.      that is, those which were made with `make-symbol' or by calling
  910.      `intern' with a second argument.
  911.  
  912.      When `print-gensym' is true, such symbols will be preceded by
  913.      `#:', which causes the reader to create a new symbol instead of
  914.      interning and returning an existing one.  Beware: The `#:' syntax
  915.      creates a new symbol each time it is seen, so if you print an
  916.      object which contains two pointers to the same uninterned symbol,
  917.      `read' will not duplicate that structure.
  918.  
  919.      Also, since XEmacs has no real notion of packages, there is no way
  920.      for the printer to distinguish between symbols interned in no
  921.      obarray, and symbols interned in an alternate obarray.
  922.  
  923.  - Variable: float-output-format
  924.      This variable holds the format descriptor string that Lisp uses to
  925.      print floats.  This is a `%'-spec like those accepted by `printf'
  926.      in C, but with some restrictions.  It must start with the two
  927.      characters `%.'.  After that comes an integer precision
  928.      specification, and then a letter which controls the format.  The
  929.      letters allowed are `e', `f' and `g'.
  930.  
  931.         * Use `e' for exponential notation `DIG.DIGITSeEXPT'.
  932.  
  933.         * Use `f' for decimal point notation `DIGITS.DIGITS'.
  934.  
  935.         * Use `g' to choose the shorter of those two formats for the
  936.           number at hand.
  937.  
  938.      The precision in any of these cases is the number of digits
  939.      following the decimal point.  With `f', a precision of 0 means to
  940.      omit the decimal point.  0 is not allowed with `f' or `g'.
  941.  
  942.      A value of nil means to use `%.16g'.
  943.  
  944.      Regardless of the value of `float-output-format', a floating point
  945.      number will never be printed in such a way that it is ambiguous
  946.      with an integer; that is, a floating-point number will always be
  947.      printed with a decimal point and/or an exponent, even if the
  948.      digits following the decimal point are all zero.  This is to
  949.      preserve read-equivalence.
  950.  
  951. 
  952. File: lispref.info,  Node: Minibuffers,  Next: Command Loop,  Prev: Read and Print,  Up: Top
  953.  
  954. Minibuffers
  955. ***********
  956.  
  957.    A "minibuffer" is a special buffer that XEmacs commands use to read
  958. arguments more complicated than the single numeric prefix argument.
  959. These arguments include file names, buffer names, and command names (as
  960. in `M-x').  The minibuffer is displayed on the bottom line of the
  961. frame, in the same place as the echo area, but only while it is in use
  962. for reading an argument.
  963.  
  964. * Menu:
  965.  
  966. * Intro to Minibuffers::      Basic information about minibuffers.
  967. * Text from Minibuffer::      How to read a straight text string.
  968. * Object from Minibuffer::    How to read a Lisp object or expression.
  969. * Minibuffer History::          Recording previous minibuffer inputs
  970.                 so the user can reuse them.
  971. * Completion::                How to invoke and customize completion.
  972. * Yes-or-No Queries::         Asking a question with a simple answer.
  973. * Multiple Queries::          Asking a series of similar questions.
  974. * Minibuffer Misc::           Various customization hooks and variables.
  975.  
  976. 
  977. File: lispref.info,  Node: Intro to Minibuffers,  Next: Text from Minibuffer,  Up: Minibuffers
  978.  
  979. Introduction to Minibuffers
  980. ===========================
  981.  
  982.    In most ways, a minibuffer is a normal XEmacs buffer.  Most
  983. operations *within* a buffer, such as editing commands, work normally
  984. in a minibuffer.  However, many operations for managing buffers do not
  985. apply to minibuffers.  The name of a minibuffer always has the form
  986. ` *Minibuf-NUMBER', and it cannot be changed.  Minibuffers are
  987. displayed only in special windows used only for minibuffers; these
  988. windows always appear at the bottom of a frame.  (Sometime frames have
  989. no minibuffer window, and sometimes a special kind of frame contains
  990. nothing but a minibuffer window; see *Note Minibuffers and Frames::.)
  991.  
  992.    The minibuffer's window is normally a single line.  You can resize it
  993. temporarily with the window sizing commands; it reverts to its normal
  994. size when the minibuffer is exited.  You can resize it permanently by
  995. using the window sizing commands in the frame's other window, when the
  996. minibuffer is not active.  If the frame contains just a minibuffer, you
  997. can change the minibuffer's size by changing the frame's size.
  998.  
  999.    If a command uses a minibuffer while there is an active minibuffer,
  1000. this is called a "recursive minibuffer".  The first minibuffer is named
  1001. ` *Minibuf-0*'.  Recursive minibuffers are named by incrementing the
  1002. number at the end of the name.  (The names begin with a space so that
  1003. they won't show up in normal buffer lists.)  Of several recursive
  1004. minibuffers, the innermost (or most recently entered) is the active
  1005. minibuffer.  We usually call this "the" minibuffer.  You can permit or
  1006. forbid recursive minibuffers by setting the variable
  1007. `enable-recursive-minibuffers'.
  1008.  
  1009.    Like other buffers, a minibuffer may use any of several local keymaps
  1010. (*note Keymaps::.); these contain various exit commands and in some
  1011. cases completion commands (*note Completion::.).
  1012.  
  1013.    * `minibuffer-local-map' is for ordinary input (no completion).
  1014.  
  1015.    * `minibuffer-local-ns-map' is similar, except that <SPC> exits just
  1016.      like <RET>.  This is used mainly for Mocklisp compatibility.
  1017.  
  1018.    * `minibuffer-local-completion-map' is for permissive completion.
  1019.  
  1020.    * `minibuffer-local-must-match-map' is for strict completion and for
  1021.      cautious completion.
  1022.  
  1023. 
  1024. File: lispref.info,  Node: Text from Minibuffer,  Next: Object from Minibuffer,  Prev: Intro to Minibuffers,  Up: Minibuffers
  1025.  
  1026. Reading Text Strings with the Minibuffer
  1027. ========================================
  1028.  
  1029.    Most often, the minibuffer is used to read text as a string.  It can
  1030. also be used to read a Lisp object in textual form.  The most basic
  1031. primitive for minibuffer input is `read-from-minibuffer'; it can do
  1032. either one.
  1033.  
  1034.    In most cases, you should not call minibuffer input functions in the
  1035. middle of a Lisp function.  Instead, do all minibuffer input as part of
  1036. reading the arguments for a command, in the `interactive' spec.  *Note
  1037. Defining Commands::.
  1038.  
  1039.  - Function: read-from-minibuffer PROMPT-STRING &optional
  1040.           INITIAL-CONTENTS KEYMAP READ HIST
  1041.      This function is the most general way to get input through the
  1042.      minibuffer.  By default, it accepts arbitrary text and returns it
  1043.      as a string; however, if READ is non-`nil', then it uses `read' to
  1044.      convert the text into a Lisp object (*note Input Functions::.).
  1045.  
  1046.      The first thing this function does is to activate a minibuffer and
  1047.      display it with PROMPT-STRING as the prompt.  This value must be a
  1048.      string.
  1049.  
  1050.      Then, if INITIAL-CONTENTS is a string, `read-from-minibuffer'
  1051.      inserts it into the minibuffer, leaving point at the end.  The
  1052.      minibuffer appears with this text as its contents.
  1053.  
  1054.      The value of INITIAL-CONTENTS may also be a cons cell of the form
  1055.      `(STRING . POSITION)'.  This means to insert STRING in the
  1056.      minibuffer but put point POSITION characters from the beginning,
  1057.      rather than at the end.
  1058.  
  1059.      If KEYMAP is non-`nil', that keymap is the local keymap to use in
  1060.      the minibuffer.  If KEYMAP is omitted or `nil', the value of
  1061.      `minibuffer-local-map' is used as the keymap.  Specifying a keymap
  1062.      is the most important way to customize the minibuffer for various
  1063.      applications such as completion.
  1064.  
  1065.      The argument HIST specifies which history list variable to use for
  1066.      saving the input and for history commands used in the minibuffer.
  1067.      It defaults to `minibuffer-history'.  *Note Minibuffer History::.
  1068.  
  1069.      When the user types a command to exit the minibuffer,
  1070.      `read-from-minibuffer' uses the text in the minibuffer to produce
  1071.      its return value.  Normally it simply makes a string containing
  1072.      that text.  However, if READ is non-`nil', `read-from-minibuffer'
  1073.      reads the text and returns the resulting Lisp object, unevaluated.
  1074.      (*Note Input Functions::, for information about reading.)
  1075.  
  1076.  - Function: read-string PROMPT &optional INITIAL
  1077.      This function reads a string from the minibuffer and returns it.
  1078.      The arguments PROMPT and INITIAL are used as in
  1079.      `read-from-minibuffer'.  The keymap used is `minibuffer-local-map'.
  1080.  
  1081.      This is a simplified interface to the `read-from-minibuffer'
  1082.      function:
  1083.  
  1084.           (read-string PROMPT INITIAL)
  1085.           ==
  1086.           (read-from-minibuffer PROMPT INITIAL nil nil nil)
  1087.  
  1088.  - Variable: minibuffer-local-map
  1089.      This is the default local keymap for reading from the minibuffer.
  1090.      By default, it makes the following bindings:
  1091.  
  1092.     <LFD>
  1093.           `exit-minibuffer'
  1094.  
  1095.     <RET>
  1096.           `exit-minibuffer'
  1097.  
  1098.     `C-g'
  1099.           `abort-recursive-edit'
  1100.  
  1101.     `M-n'
  1102.           `next-history-element'
  1103.  
  1104.     `M-p'
  1105.           `previous-history-element'
  1106.  
  1107.     `M-r'
  1108.           `next-matching-history-element'
  1109.  
  1110.     `M-s'
  1111.           `previous-matching-history-element'
  1112.  
  1113.  - Function: read-no-blanks-input PROMPT &optional INITIAL
  1114.      This function reads a string from the minibuffer, but does not
  1115.      allow whitespace characters as part of the input: instead, those
  1116.      characters terminate the input.  The arguments PROMPT and INITIAL
  1117.      are used as in `read-from-minibuffer'.
  1118.  
  1119.      This is a simplified interface to the `read-from-minibuffer'
  1120.      function, and passes the value of the `minibuffer-local-ns-map'
  1121.      keymap as the KEYMAP argument for that function.  Since the keymap
  1122.      `minibuffer-local-ns-map' does not rebind `C-q', it *is* possible
  1123.      to put a space into the string, by quoting it.
  1124.  
  1125.           (read-no-blanks-input PROMPT INITIAL)
  1126.           ==
  1127.           (read-from-minibuffer PROMPT INITIAL minibuffer-local-ns-map)
  1128.  
  1129.  - Variable: minibuffer-local-ns-map
  1130.      This built-in variable is the keymap used as the minibuffer local
  1131.      keymap in the function `read-no-blanks-input'.  By default, it
  1132.      makes the following bindings, in addition to those of
  1133.      `minibuffer-local-map':
  1134.  
  1135.     <SPC>
  1136.           `exit-minibuffer'
  1137.  
  1138.     <TAB>
  1139.           `exit-minibuffer'
  1140.  
  1141.     `?'
  1142.           `self-insert-and-exit'
  1143.  
  1144. 
  1145. File: lispref.info,  Node: Object from Minibuffer,  Next: Minibuffer History,  Prev: Text from Minibuffer,  Up: Minibuffers
  1146.  
  1147. Reading Lisp Objects with the Minibuffer
  1148. ========================================
  1149.  
  1150.    This section describes functions for reading Lisp objects with the
  1151. minibuffer.
  1152.  
  1153.  - Function: read-minibuffer PROMPT &optional INITIAL
  1154.      This function reads a Lisp object in the minibuffer and returns it,
  1155.      without evaluating it.  The arguments PROMPT and INITIAL are used
  1156.      as in `read-from-minibuffer'.
  1157.  
  1158.      This is a simplified interface to the `read-from-minibuffer'
  1159.      function:
  1160.  
  1161.           (read-minibuffer PROMPT INITIAL)
  1162.           ==
  1163.           (read-from-minibuffer PROMPT INITIAL nil t)
  1164.  
  1165.      Here is an example in which we supply the string `"(testing)"' as
  1166.      initial input:
  1167.  
  1168.           (read-minibuffer
  1169.            "Enter an expression: " (format "%s" '(testing)))
  1170.           
  1171.           ;; Here is how the minibuffer is displayed:
  1172.  
  1173.           ---------- Buffer: Minibuffer ----------
  1174.           Enter an expression: (testing)-!-
  1175.           ---------- Buffer: Minibuffer ----------
  1176.  
  1177.      The user can type <RET> immediately to use the initial input as a
  1178.      default, or can edit the input.
  1179.  
  1180.  - Function: eval-minibuffer PROMPT &optional INITIAL
  1181.      This function reads a Lisp expression in the minibuffer, evaluates
  1182.      it, then returns the result.  The arguments PROMPT and INITIAL are
  1183.      used as in `read-from-minibuffer'.
  1184.  
  1185.      This function simply evaluates the result of a call to
  1186.      `read-minibuffer':
  1187.  
  1188.           (eval-minibuffer PROMPT INITIAL)
  1189.           ==
  1190.           (eval (read-minibuffer PROMPT INITIAL))
  1191.  
  1192.  - Function: edit-and-eval-command PROMPT FORM
  1193.      This function reads a Lisp expression in the minibuffer, and then
  1194.      evaluates it.  The difference between this command and
  1195.      `eval-minibuffer' is that here the initial FORM is not optional
  1196.      and it is treated as a Lisp object to be converted to printed
  1197.      representation rather than as a string of text.  It is printed with
  1198.      `prin1', so if it is a string, double-quote characters (`"')
  1199.      appear in the initial text.  *Note Output Functions::.
  1200.  
  1201.      The first thing `edit-and-eval-command' does is to activate the
  1202.      minibuffer with PROMPT as the prompt.  Then it inserts the printed
  1203.      representation of FORM in the minibuffer, and lets the user edit.
  1204.      When the user exits the minibuffer, the edited text is read with
  1205.      `read' and then evaluated.  The resulting value becomes the value
  1206.      of `edit-and-eval-command'.
  1207.  
  1208.      In the following example, we offer the user an expression with
  1209.      initial text which is a valid form already:
  1210.  
  1211.           (edit-and-eval-command "Please edit: " '(forward-word 1))
  1212.           
  1213.           ;; After evaluation of the preceding expression,
  1214.           ;;   the following appears in the minibuffer:
  1215.  
  1216.           ---------- Buffer: Minibuffer ----------
  1217.           Please edit: (forward-word 1)-!-
  1218.           ---------- Buffer: Minibuffer ----------
  1219.  
  1220.      Typing <RET> right away would exit the minibuffer and evaluate the
  1221.      expression, thus moving point forward one word.
  1222.      `edit-and-eval-command' returns `t' in this example.
  1223.  
  1224.